package org.kugua.strategy;

import org.kugua.dto.Captcha;

import java.awt.Font;
import java.util.List;

/**
 * 验证码生成策略
 *
 * @author 苦瓜
 * @create 2024-08-26
 * @since 1.0.0
 */
public interface CaptchaStrategy {

    /**
     * 验证码-生成
     *
     * @return Captcha
     */
    Captcha generate();

    /**
     * 验证码-生成
     *
     * @param width 宽度
     * @param height 高度
     * @return Captcha
     */
    Captcha generate(int width, int height);

    /**
     * 验证码生成
     *
     * @param width 宽度
     * @param height 高度
     * @param words 内容
     * @return Captcha
     */
    Captcha generate(int width, int height, String words);

    /**
     * 验证码生成
     *
     * @param width 宽度
     * @param height 高度
     * @param words 验证码内容
     * @param font 验证码字体
     * @return Captcha
     */
    Captcha generate(int width, int height, String words, Font font);

    /**
     * 验证码是否有效
     *
     * @param source 原始值
     * @param target 目标值
     * @param accuracy 精度
     * @return boolean true：正确，否则false
     */
    boolean valid(List<String> source, List<String> target, Long accuracy);
}
